<?php
namespace PsiFramework\Applications\Bibliotheque\Classes\Model;

import("Classes.Model.Object");
import("Applications.Bibliotheque.Classes.Model.Auteur");
import("Applications.Bibliotheque.Classes.Model.Role");

use \PsiFramework\Classes\Model\Object;
use \PsiFramework\Applications\Bibliotheque\Classes\Model\Auteur;
use \PsiFramework\Applications\Bibliotheque\Classes\Model\Role;

/**
 * Bibliotheque
 * Gestion de ma bibliothèque
 *
 * @author Rémi San
 * @version beta
 */

/**
 * Classe d'une Contribution
 *
 * @package Model
 */
class Contribution extends Object
{

    protected /*Auteur*/    $_auteur ;
    protected /*Role*/      $_role ;
    protected /*Oeuvre*/    $_oeuvre ;

    /**
     * Constructeur
     *
     * @param       Auteur      $auteur             L'auteur de la Contribution
     * @param       Role           $role               Le rôle de l'auteur
     * @param       Oeuvre       $oeuvre             L'Oeuvre concernée
     */
    public function __construct(
        /*Auteur*/ $auteur=null,
        /*Role*/ $role=null,
        /*Oeuvre*/ $oeuvre=null
    )
    {
        $this->_auteur = $auteur ;
        $this->_role = $role ;
        $this->_oeuvre = $oeuvre ;
    }

    public function getId()
    {
        if (
            is_null($this->_auteur) &&
            is_null($this->_role) &&
            is_null($this->_oeuvre)
        ) {
            return null ;
        } else {
            $id = array();
            if (!is_null($this->_auteur)) $id["auteur"] = $this->_auteur ;
            if (!is_null($this->_role)) $id["role"] = $this->_role ;
            if (!is_null($this->_oeuvre)) $id["oeuvre"] = $this->_oeuvre ;
            return $id ;
        }
    }

    public function getAuteur()
    {
        return $this->_auteur ;
    }

    public function setAuteur($auteur)
    {
        $this->_auteur = $auteur ;
    }

    public function getRole()
    {
        return $this->_role ;
    }

    public function setRole($role)
    {
        $this->_role = $role ;
    }

    public function getOeuvre()
    {
        return $this->_oeuvre ;
    }

    public function setOeuvre($oeuvre)
    {
        $this->_oeuvre = $oeuvre ;
    }

    public function toString()
    {
        $string = $this->_auteur->toString();
        if ($this->_role != null) {
            $string .= " (" . $this->_role->toString() . ")" ;
        }
        return $string;
    }
}
